<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文档导出功能使用指南</title>
    <style>
        body {
            font-family: 'Microsoft YaHei', Arial, sans-serif;
            max-width: 900px;
            margin: 0 auto;
            padding: 20px;
            line-height: 1.6;
            color: #333;
        }
        .header {
            background-color: #3498db;
            color: white;
            padding: 20px;
            text-align: center;
            border-radius: 5px;
            margin-bottom: 30px;
        }
        h1, h2, h3 {
            color: #2c3e50;
        }
        h2 {
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
            margin-top: 30px;
        }
        pre {
            background-color: #f8f8f8;
            padding: 15px;
            border-radius: 5px;
            overflow-x: auto;
            border: 1px solid #ddd;
        }
        code {
            font-family: Consolas, monospace;
            background-color: #f0f0f0;
            padding: 2px 4px;
            border-radius: 3px;
        }
        .note {
            background-color: #e7f4ff;
            border-left: 4px solid #3498db;
            padding: 15px;
            margin: 20px 0;
            border-radius: 0 5px 5px 0;
        }
        .warning {
            background-color: #fff8e7;
            border-left: 4px solid #f39c12;
            padding: 15px;
            margin: 20px 0;
            border-radius: 0 5px 5px 0;
        }
        table {
            border-collapse: collapse;
            width: 100%;
            margin: 20px 0;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px 12px;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
        .btn {
            display: inline-block;
            background-color: #3498db;
            color: white;
            text-decoration: none;
            padding: 10px 15px;
            border-radius: 4px;
            margin-top: 20px;
        }
        .btn:hover {
            background-color: #2980b9;
        }
        img {
            max-width: 100%;
            height: auto;
            border: 1px solid #ddd;
            border-radius: 4px;
            margin: 15px 0;
        }
        .step {
            margin-bottom: 25px;
            padding-left: 20px;
            position: relative;
        }
        .step-number {
            position: absolute;
            left: 0;
            top: 0;
            background-color: #3498db;
            color: white;
            width: 24px;
            height: 24px;
            border-radius: 50%;
            text-align: center;
            line-height: 24px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div class="header">
        <h1>Word/PDF 文档导出功能使用指南</h1>
        <p>本指南将帮助你使用并测试系统的文档导出功能</p>
    </div>
    
    <h2>简介</h2>
    <p>系统提供了从Word模板生成文档并导出为Word或PDF格式的功能。这些功能通过REST API接口提供，支持自定义文档内容、页眉页脚、水印等。</p>
    
    <div class="note">
        <strong>提示：</strong> 本系统使用的是基于模板替换的方式生成文档，你需要首先准备带有占位符的Word模板文件。
    </div>
    
    <h2>前提条件</h2>
    <ul>
        <li>已创建并上传了Word模板文件到系统的<code>templates</code>目录</li>
        <li>模板中包含了格式为<code>${placeholder}</code>的占位符</li>
        <li>（可选）安装了LibreOffice/OpenOffice或Microsoft Office用于Word到PDF的转换</li>
    </ul>
    
    <h2>创建Word模板</h2>
    
    <div class="step">
        <div class="step-number">1</div>
        <h3>准备Word模板</h3>
        <p>使用Microsoft Word或其他兼容的文字处理软件创建包含占位符的模板文件。占位符格式为<code>${placeholder}</code>。</p>
        <p>例如，你可以创建一个包含以下占位符的文档：</p>
        <pre>标题：${title}
作者：${author}
日期：${date}
内容：${content}</pre>
    </div>
    
    <div class="step">
        <div class="step-number">2</div>
        <h3>保存模板</h3>
        <p>将模板保存为<code>.docx</code>格式，并放置在系统的<code>templates</code>目录中。</p>
        <p>默认路径为：<code>src/main/resources/templates/</code></p>
    </div>
    
    <div class="warning">
        <strong>注意：</strong> 确保模板文件使用的是.docx格式（Office Open XML），而不是旧的.doc格式。
    </div>
    
    <h2>使用测试页面</h2>
    
    <div class="step">
        <div class="step-number">1</div>
        <h3>访问测试页面</h3>
        <p>打开浏览器，访问以下URL：</p>
        <pre>http://localhost:8080/document-export.html</pre>
    </div>
    
    <div class="step">
        <div class="step-number">2</div>
        <h3>选择模板和填写信息</h3>
        <ul>
            <li>选择要使用的Word模板</li>
            <li>填写文件名、页眉、页脚等基本信息</li>
            <li>输入JSON格式的占位符数据</li>
            <li>根据需要设置水印文本和颜色</li>
        </ul>
    </div>
    
    <div class="step">
        <div class="step-number">3</div>
        <h3>导出文档</h3>
        <p>点击"导出Word文档"或"导出PDF文档"按钮，系统将处理请求并提供下载链接。</p>
    </div>
    
    <h2>REST API接口说明</h2>
    
    <h3>1. Word文档导出</h3>
    <pre>POST /common/exportWord
Content-Type: application/json

{
    "businessType": "SAMPLE",
    "templateName": "template.docx",
    "fileName": "导出文档.docx",
    "placeholderData": {
        "title": "测试文档",
        "author": "系统管理员",
        "date": "2023年01月01日",
        "content": "这是测试内容"
    },
    "header": "文档页眉",
    "footer": "文档页脚",
    "watermarkText": "机密文件",
    "watermarkColor": "#CCCCCC",
    "showPageNumbers": true
}</pre>
    
    <h3>2. PDF文档导出</h3>
    <pre>POST /common/exportWordAsPdf
Content-Type: application/json

{
    "businessType": "SAMPLE",
    "templateName": "template.docx",
    "fileName": "导出文档.pdf",
    "placeholderData": {
        "title": "测试文档",
        "author": "系统管理员",
        "date": "2023年01月01日",
        "content": "这是测试内容"
    },
    "header": "文档页眉",
    "footer": "文档页脚",
    "watermarkText": "机密文件",
    "watermarkColor": "#CCCCCC",
    "showPageNumbers": true
}</pre>
    
    <h2>参数说明</h2>
    
    <table>
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>必须</th>
                <th>说明</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>businessType</td>
                <td>String</td>
                <td>否</td>
                <td>业务类型，用于选择特定的DocumentProvider</td>
            </tr>
            <tr>
                <td>templateName</td>
                <td>String</td>
                <td>是</td>
                <td>模板文件名称，位于templates目录</td>
            </tr>
            <tr>
                <td>fileName</td>
                <td>String</td>
                <td>否</td>
                <td>导出文件名，不提供时使用默认生成的文件名</td>
            </tr>
            <tr>
                <td>placeholderData</td>
                <td>Map&lt;String, Object&gt;</td>
                <td>否</td>
                <td>用于替换模板中占位符的数据</td>
            </tr>
            <tr>
                <td>header</td>
                <td>String</td>
                <td>否</td>
                <td>页眉内容</td>
            </tr>
            <tr>
                <td>footer</td>
                <td>String</td>
                <td>否</td>
                <td>页脚内容</td>
            </tr>
            <tr>
                <td>watermarkText</td>
                <td>String</td>
                <td>否</td>
                <td>水印文本</td>
            </tr>
            <tr>
                <td>watermarkColor</td>
                <td>String</td>
                <td>否</td>
                <td>水印颜色，格式如 #CCCCCC</td>
            </tr>
            <tr>
                <td>showPageNumbers</td>
                <td>Boolean</td>
                <td>否</td>
                <td>是否显示页码，默认为true</td>
            </tr>
        </tbody>
    </table>
    
    <h2>故障排除</h2>
    
    <h3>Word导出问题</h3>
    <ul>
        <li><strong>模板找不到</strong>: 确保模板文件存在于正确的目录，且名称与请求中的templateName匹配</li>
        <li><strong>占位符未替换</strong>: 检查占位符格式是否正确（${placeholder}），以及提供的数据是否包含对应的键</li>
        <li><strong>样式问题</strong>: 如果导出的Word文档样式有问题，可能是模板中使用了不兼容的格式</li>
    </ul>
    
    <h3>PDF转换问题</h3>
    <ul>
        <li><strong>转换失败</strong>: 确保系统安装了LibreOffice、OpenOffice或Microsoft Office</li>
        <li><strong>依赖项问题</strong>: 如果使用documents4j，确保Maven依赖正确配置</li>
        <li><strong>格式问题</strong>: 某些复杂格式可能在转换过程中丢失，尝试简化模板</li>
    </ul>
    
    <div class="note">
        <strong>提示：</strong> 系统会自动尝试多种PDF转换方法。如果一种方法失败，会自动尝试下一种方法。
    </div>
    
    <h2>相关资源</h2>
    <ul>
        <li><a href="document-export.html">文档导出测试页面</a></li>
        <li><a href="https://poi.apache.org/components/document/quick-guide-xwpf.html" target="_blank">Apache POI XWPF 文档</a></li>
        <li><a href="https://www.documents4j.com" target="_blank">documents4j 文档</a></li>
    </ul>

    <div style="text-align: center; margin-top: 30px;">
        <a href="document-export.html" class="btn">返回测试页面</a>
        <a href="index.html" class="btn" style="margin-left: 10px;">返回主页</a>
    </div>
</body>
</html> 